#!/bin/bash
# petteriIII 16.10.2015. muistutus:  echo aaa... kestää noin .105millisekuntia ja 0.15mikrosekuntia/merkki. # haettu foorumilta muttei tämä ole viimeinen; missähän se on?
# skripti on tarkoitettu käskyjen&"yksi tai monirivisten skriptien" suoritusajan luotettavaan mittaamiseen kun niiden suoritusajat vaihtelevat nolla-ajasta äärettömään aikaan. Mittausten
# toistettavuus pitkäkestoisissa mittauksissa on 0.1 ms, 10ms kestävissä mittauksissa 0.04ms ja alle puoli-millisekuntia kestävissä mittauksissa 0.01ms.
#kkkkk
# skripti päättelee itse kuinka monesta mittauksesta sen tulee muodostaa keskiarvo. Mitattaessa alle millisekunnin kestäviä käskyjä mittausten lukumäärä on suuri ja mitattaessa yli sata
# sekuntia kestäviä käskyja mittausten lukumäärä on yksi.
#
# mikäli mitattava käsky haluaa kirjoittaa näytölle niin anna sen kirjoittaa. Mittaamisen aikana tietokoneen kanssa ei saa tehdä muuta.

function mittaus () {   alkuhetki=$(date +%s.%N)   # echo '1 2 3 4' | awk '{print $2}'  # echo '1 2 3 4' | cut -d ' ' -f 2 # tr -dc 3 < koe | wc -c
  for (( n=1; n<=$mittauskerrat; n++ )); do  read -t 1
done ;}
 
# Pääohjelma
alkuhetki=$(date +%s.%N)
mittauskerrat=1; mittaus; aika=$(echo $(date +%s.%N)-$alkuhetki-.00058 | bc )
mittauskerrat=$(echo 1000/$aika+1 | bc ); mittauskerrat=$(echo ${mittauskerrat#[-+]}); (( $mittauskerrat > 100000 )) && mittauskerrat=100000; lisamittausaika=$(echo $aika*$mittauskerrat | bc )
alkuhetki=$(date +%s.%N)
(( $mittauskerrat > 0 )) && echo 'Lisämittauksia tullaan suorittamaan noin:'$lisamittausaika' sekuntia'; sleep 2
  mittaus; rm /tmp/tuloste
echo $(echo $(date +%s.%N)/$mittauskerrat-$alkuhetki/$mittauskerrat-.00058 | bc -l)" sekuntia kului:$mittauskerrat mittauksen keskiarvona" | tee /tmp/tuloste
